"""
NumPy 数组的维数称为秩（rank），秩就是轴的数量，即数组的维度，一维数组的秩为 1，二维数组的秩为 2，以此类推。

在 NumPy中，每一个线性的数组称为是一个轴（axis），也就是维度（dimensions）。
比如说，二维数组相当于是两个一维数组，其中第一个一维数组中每个元素又是一个一维数组。
所以一维数组就是 NumPy 中的轴（axis），第一个轴相当于是底层数组，第二个轴是底层数组里的数组。
而轴的数量——秩，就是数组的维数。

很多时候可以声明 axis。
axis=0，表示沿着第 0 轴进行操作，即对每一列进行操作；
axis=1，表示沿着第1轴进行操作，即对每一行进行操作。
"""

import numpy as np 
 
# ndarray.ndim 用于获取数组的维度数量（即数组的轴数）。
a = np.arange(24)  
print (a.ndim)             # a 现只有一个维度
# 现在调整其大小
b = a.reshape(2,4,3)  # b 现在拥有三个维度
print (b.ndim)

# ndarray.shape 表示数组的维度，返回一个元组，这个元组的长度就是维度的数目，即 ndim 属性(秩)。
# 比如，一个二维数组，其维度表示"行数"和"列数"。
print('='*32)
a = np.array([[1,2,3],[4,5,6]])  
print (a.shape)

# 调整数组大小。shape可以理解为，从外到内包裹数据。对于二维来说，第一个数据表示行数。
a.shape =  (3,2)  
print (a)

print('='*32)
a = np.array([[1,2,3],[4,5,6]]) 
b = a.reshape(3,2)  
print (b)

# 数组的 dtype 为 int8（一个字节）  
print('='*32)
x = np.array([1,2,3,4,5], dtype = np.int8)  
print (x.itemsize)
 
# 数组的 dtype 现在为 float64（八个字节） 
y = np.array([1,2,3,4,5], dtype = np.float64)  
print (y.itemsize)

print('='*32)
x = np.array([1,2,3,4,5])  
print (x.flags)